home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Compilers⁄Interps / kevoSource / tasks.h < prev   
Text File  |  1993-05-12  |  2KB  |  74 lines

  1. /* Kevo -- a prototype-based object-oriented language */
  2. /* (c) Antero Taivalsaari 1991-1993                   */
  3. /* Some parts (c) Antero Taivalsaari 1986-1988           */
  4. /* tasks.h: Task management internals                   */
  5.  
  6. /*
  7.   TaskStruct describes the first fields of task-specific (user) data areas.
  8.  
  9.   Note that if you change the order of these field, the corresponding
  10.   ordering in the image file must be changed too.
  11. */
  12.  
  13. typedef struct taskStruct TASK;
  14.  
  15. struct  taskStruct {
  16.     OBJECT*     ctxtObj;        /* This field always contains '(=context)' */
  17.     CONTEXT* ctxtPtr;        /* This field contains the context */
  18.     TASK**    nextInRobin;    /* Next task in round robin chain */
  19.     TASK**    nextTask;        /* Next task in the system */
  20.     int**    rpStore;        /* Return stack pointer temporary storage */
  21.     int**    fp;                /* Frame pointer for blocks */
  22.     int        priority;        /* The priority of the task */
  23.     OBJECT*    returnStack;    /* The return stack */
  24.     OBJECT*    dataStack;        /* The data stack */
  25.     OBJECT*    contextStack;    /* The context stack */
  26.     OBJECT*    trampoline;        /* Interactive execution area */
  27.     OBJECT* textBuffer;        /* The text input buffer */
  28.     int        textHead;        /* Offset to the latest character within text buffer */
  29.     int        textTail;        /* Offset to the last read character within text buffer */
  30.     int        endOfFile;        /* End of file flag */
  31.     OBJECT*    infileStack;    /* Input file stack */
  32.     OBJECT* outfileStack;    /* Output file stack */
  33.     int        infilePtr;        /* Input file stack pointer */
  34.     int        outfilePtr;        /* Output file stack pointer */
  35.     FILE*    infile;            /* Current input file */
  36.     FILE*    outfile;        /* Current output file */
  37.     FILE*    errfile;        /* Current error file */
  38.     int*    window;            /* The window of the task (the real type is 'WindowPtr') */
  39.     OBJECT* path;            /* The search path (not used in current implementation) */
  40.     int        assigning;        /* The assignment counter for to-variables */
  41.     OBJECT* errorVector;    /* The error handler for the task */
  42. };
  43.  
  44.  
  45. /* Primitive operations on tasks */
  46.  
  47. void         yieldTo();
  48. void        storeExecEnv();
  49. void        loadExecEnv();
  50.  
  51. TASK**        buildTask();
  52. TASK**        previousRunningTask();
  53.  
  54. int            isActivated();
  55.  
  56. void        activateTask();
  57. int            suspendTask();
  58. int            yieldingSuspend();
  59. int            deleteTask();
  60. int            killTask();
  61.  
  62. void        setTaskBehavior();
  63. void        toTaskData();
  64. void        toTaskReturn();
  65. void        toTaskCtxt();
  66.  
  67. void        resizeDataStack();
  68. void        resizeReturnStack();
  69. void        resizeContextStack();
  70.  
  71. OBJECT*        getTaskCWD();
  72. void        setTaskCWD();
  73.  
  74.